home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / dehqx-20 / smalleve.p < prev   
Text File  |  1991-08-23  |  4KB  |  132 lines

  1. unit SmallEvents;
  2. { DeHQX v2.0.0 ⌐ Peter Lewis, Aug 1991 }
  3.  
  4. interface
  5.  
  6.     uses
  7.         MyTypes, AppGlobals, MyMainLoop, MyUtilities, MyMenus, Preferences, MyNotifier, DoMenus;
  8.  
  9.     function HandleSimpleEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
  10. { Get an event, handle it, and return true if more needs be done }
  11.     procedure HandleMainEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply);
  12. { Get an event, handle it, then handle menus and keys }
  13.     function HandleCancelEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
  14. { Get an event, handle it, then handle menus and keys and return true if cancel (cmd-., or quit) }
  15.     procedure HandleCancelErrorEvents (sleep: longInt; rgn: rgnHandle; var oe: OSErr; var reply: HEReply);
  16. { Get an event, handle it, then handle menus and keys and set oe=cancelErr if oe=noErr }
  17.  
  18. implementation
  19.  
  20.     function HandleSimpleEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
  21.         procedure HandleHilitePrefItem (item: integer);
  22.             var
  23.                 kind: integer;
  24.                 h: handle;
  25.                 r: rect;
  26.                 f: longInt;
  27.         begin
  28.             GetDItem(prefs_dialog, item, kind, h, r);
  29.             HiliteControl(controlHandle(h), 1);
  30.             Delay(2, f);
  31.             HiliteControl(controlHandle(h), 0);
  32.             HandlePrefitem(item);
  33.         end;
  34.         var
  35.             er: eventRecord;
  36.             b: boolean;
  37.     begin
  38.         SetMenus;
  39.         if in_foreground then
  40.             NotifyCompletion;
  41.         WaitForEvent(er, sleep, rgn);
  42.         b := HandleEvents(er, reply);
  43.         if b then
  44.             if (FrontWindow = prefs_dialog) and (prefs_dialog <> nil) then
  45.                 with reply do
  46.                     case todo of
  47.                         T_Close: 
  48.                             begin
  49.                             ClosePreferences;
  50.                             b := false;
  51.                         end;
  52.                         T_Dialog: 
  53.                             begin
  54.                             HandlePrefItem(theitem);
  55.                             b := false;
  56.                         end;
  57.                         T_Key: 
  58.                             begin
  59.                             if (BAND(HEer.message, charCodeMask) = 13) or (BAND(HEer.message, charCodeMask) = 3) then
  60.                                 HandleHilitePrefItem(Pref_Default_Item)
  61.                             else if (BAND(HEer.message, charCodeMask) = ord('.')) and (BAND(HEer.modifiers, cmdKey) <> 0) then
  62.                                 HandleHilitePrefItem(Pref_Cancel_Item)
  63.                             else
  64.                                 SysBeep(1);
  65.                             b := false;
  66.                         end;
  67.                         otherwise
  68.                             ;
  69.                     end;
  70.         HandleSimpleEvents := b;
  71.     end;
  72.  
  73.     procedure HandleMainEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply);
  74.     begin
  75.         if HandleSimpleEvents(sleep, rgn, reply) then
  76.             with reply do
  77.                 case todo of
  78.                     T_Menu: 
  79.                         begin
  80.                         DoMenu(themenu, theitem);
  81.                     end;
  82.                     T_Key: 
  83.                         SysBeep(1);
  84.                     otherwise
  85.                         ;
  86.                 end;
  87.     end;
  88.  
  89.     function HandleCancelEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
  90.         var
  91.             b: boolean;
  92.             a: integer;
  93.     begin
  94.         b := false;
  95.         if HandleSimpleEvents(sleep, rgn, reply) then
  96.             with reply do
  97.                 case todo of
  98.                     T_Menu: 
  99.                         begin
  100.                         b := quitNow;
  101.                         DoMenu(themenu, theitem);
  102.                         if quitNow and not b then begin
  103.                             a := Alert(quit_now_alert_id, nil);
  104.                             if a <> 1 then begin
  105.                                 quitNow := false;
  106.                                 HiliteMenu(0);
  107.                             end;
  108.                         end;
  109.                         if quitNow then
  110.                             b := true;
  111.                     end;
  112.                     T_Key: 
  113.                         if (BAND(HEer.message, charCodeMask) = ord('.')) and (BAND(HEer.modifiers, cmdKey) <> 0) then
  114.                             b := true
  115.                         else
  116.                             SysBeep(1);
  117.                     T_Dialog: 
  118.                         b := true; { Only dialog event we can get is the Cancel button (I think!), others are handled before here }
  119.                     otherwise
  120.                         ;
  121.                 end;
  122.         HandleCancelEvents := b;
  123.     end;
  124.  
  125.     procedure HandleCancelErrorEvents (sleep: longInt; rgn: rgnHandle; var oe: OSErr; var reply: HEReply);
  126.     begin
  127.         if HandleCancelEvents(sleep, rgn, reply) then
  128.             if oe = noErr then
  129.                 oe := cancelErr;
  130.     end;
  131.  
  132. end.